/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.sigodonto.view.managedbean;

import br.com.sigodonto.model.dao.TratamentoDao;
import br.com.sigodonto.model.entity.Dentista;
import br.com.sigodonto.model.entity.Tratamento;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import org.primefaces.event.ItemSelectEvent;
import org.primefaces.model.chart.CartesianChartModel;
import org.primefaces.model.chart.ChartSeries;

/**
 *
 * @author Fidelis
 */
@ManagedBean
@ViewScoped
public class AdminDentistaMB implements Serializable{

    /**
     * Creates a new instance of AdminDentistaMB
     */
    private CartesianChartModel categoryModel;
    private TratamentoDao dao;
    private Dentista dentistaSelecionado;
    private List<Dentista> dentistas;
    
    public AdminDentistaMB() {
        this.dao = new TratamentoDao();
        categoryModel = new CartesianChartModel();  
  
        this.dentistas = this.dao.listarTodos(Dentista.class);
        
        ChartSeries itens = new ChartSeries();  
        itens.setLabel("Dentista");
        
        for (Dentista dentista : dentistas) {
            List<Tratamento> tratamentos = this.dao.tratamentoPorDentista(dentista);
            itens.set(dentista.getNome(), tratamentos.size());
        }
        
        categoryModel.addSeries(itens);
    }
    
    public void itemSelect(ItemSelectEvent event) {
        int serie = event.getSeriesIndex();
        int indice = event.getItemIndex();
        
        List<ChartSeries> series = this.categoryModel.getSeries();
        
        ChartSeries cs = series.get(serie);
        
        Map<Object, Number> data = cs.getData();
        Set<Object> objs = data.keySet();
        Object[] objects = objs.toArray();
        
        String nome = (String) objects[indice];
        for (Dentista dentista : dentistas) {
            if(dentista.getNome().equals(nome)){
                this.dentistaSelecionado = dentista;
            }
        }
        
    }

    public CartesianChartModel getCategoryModel() {
        return categoryModel;
    }

    public void setCategoryModel(CartesianChartModel categoryModel) {
        this.categoryModel = categoryModel;
    }

    public Dentista getDentistaSelecionado() {
        return dentistaSelecionado;
    }

    public void setDentistaSelecionado(Dentista dentistaSelecionado) {
        this.dentistaSelecionado = dentistaSelecionado;
    }
    
    
}
